#include "comm.hpp"

typedef void (*func_t)(); 

/////////////////////////////////////其他进程要完成的某种任务////////////////////////////

void DownLoadTask()
{
    std::cout << "正在完成下载任务" << std::endl;
}

void IOTask()
{
    std::cout << "正在完成IO任务" << std::endl;
}

void FlushTask()
{
    std::cout << "正在完成刷新任务" << std::endl;
}

void loadTaskFunc(std::vector<func_t> &funcMap)
{
    funcMap.push_back(DownLoadTask);
    funcMap.push_back(IOTask);
    funcMap.push_back(FlushTask);
}
int main()
{
    std::vector<func_t> funcMap; 
    loadTaskFunc(funcMap);
    std::string name = NAME_PIPE;
    name += '0';
    const char* fileName = name.c_str();
    int fd = open(fileName, O_RDONLY);

    while (true)
    {
        sleep(1);
        int num;
        ssize_t s = read(fd, &num, sizeof(num));
        if (s > 0 && num <= funcMap.size())
        {
            // 完成任务，调用方法
            std::cout << "client1 running# ";
            funcMap[num]();//这才是调用！！
        }
        else
        {
            // s == 0
            break;
        }
    }
    close(fd);
    // std::cout << "client1 see:" << num << std::endl;

    return 0;
}